package com.futl.my.shop.commons.persistence;

import com.futl.my.shop.commons.dto.BaseResult;
import com.futl.my.shop.commons.dto.PageInfo;

import java.util.List;

/**
 * @author tw
 * @version 1.0
 * @date 2020/6/1 19:40
 */
public interface BaseService<T extends BaseEntity> {

    /**
     * 查询全部数据
     * @return
     */
    List<T> selectAll();

    /**
     * 保存
     * @param entity
     * @return
     */
    BaseResult save(T entity);

    /**
     * 删除
     * @param id
     */
    void delete(long id);

    /**
     * 根据id查询
     * @param id
     * @return
     */
    T getById(long id);

    /**
     * 更新
     * @param entity
     */
    void update(T entity);


    /**
     * 批量删除
     * @param idArray
     */
    void deleteMulti(String[] idArray);

    /**
     * 分页查询
     * @param start
     * @param length
     * @param draw
     * @param entity
     * @return
     */
    PageInfo<T> page(int start, int length, int draw, T entity);

    /**
     * 查询总数
     * @param entity
     * @return
     */
    int count(T entity);
}
